home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / CUGUK / APPLICAT / C034.ZIP / DBQDEFS.H < prev    next >
Text File  |  2010-11-01  |  6KB  |  328 lines

  1. /* SDB - definition file */
  2.  
  3. /*    set to alloc,free/hfree (normal) or malloc,mfree (debug)    */
  4. #define CALLOC alloc
  5. #define CFREE hfree
  6.  
  7. /* #define DBPI */ /* Database procedural interface support (not full) */
  8. /* #define DEBUG */ /* Trace prints etc */
  9.  
  10. /*    Character defs        */
  11.  
  12. #define BS    0x7F
  13. #define CR    0xD
  14. #define FF    0xC
  15. #define ESC    0x1B
  16.  
  17. #define STDIN    0
  18. #define STDOUT    1
  19. #define STDLST    2
  20. #define STDPUN    3
  21. #define STDERR    4
  22.  
  23. /*    Program limits        */
  24.  
  25. #define LINEMAX        132    /* Max input line length */
  26. #define    TABLEMAX    132    /*    table input length */
  27. #define KEYWORDMAX    10    /*    keyword length */
  28. #define NUMBERMAX    20    /*    number length */
  29. #define MATHMAX        99    /*    Maths number max */
  30. #define STRINGMAX    132    /*    string length */
  31. #define CODEMAX        100    /*    length of code array */
  32. #define STACKMAX    20    /*    interpreter stack size */
  33.  
  34. /*    Token defs    */
  35.  
  36. #define    EOS        0
  37. #define LSS        -1
  38. #define LEQ        -2
  39. #define EQL        -3
  40. #define CONT        -4
  41. #define NEQ        -5
  42. #define GEQ        -6
  43. #define GTR        -7
  44. #define SELECT        -8
  45. #define FROM        -9
  46. #define WHERE        -10
  47. #define CREATE        -11
  48. #define DELETE        -12
  49. #define INSERT        -13
  50. #define EXXIT        -14
  51. #define CHARR        -15
  52. #define NUM        -16
  53. #define ID        -17
  54. #define STRING        -18
  55. #define NUMBER        -19
  56. #define UPDATE        -20
  57. #define PRINT        -21
  58. #define IMPORT        -22
  59. #define EXPORT        -23
  60. #define INTO        -24
  61. #define PROMPT        -25
  62. #define COMPRESS    -26
  63. #define EXTRACT        -27
  64. #define DEFYNE        -28
  65. #define SHOW        -29
  66. #define USING        -30
  67. #define SORT        -31
  68. #define BY        -32
  69. #define ASCENDING    -33
  70. #define DESCENDING    -34
  71. #define SET        -35
  72. #define ERASE        -36
  73. #define RENAME        -37
  74.  
  75. /*    character tokens        */
  76.  
  77. #define PLUS    '+'
  78. #define CHAND    '&'
  79. #define CHOR    '|'
  80. #define CHNOT    '~'
  81. #define COMMENT    '#'
  82. #define CHALL    '*'
  83. #define HELP    '?'
  84.  
  85.  
  86. /*    Other tokens used in interpreter    */
  87.  
  88. #define XSTOP    0
  89. #define XPUSH    1
  90. #define XNOT    2
  91. #define TKXOR    3
  92. #define TKXAND    4
  93.  
  94. /*    Operand types    */
  95.  
  96. #define LITERAL    1
  97. #define ATTR    2
  98. #define TEMP    3
  99.  
  100. /*    Attribute data types    */
  101.  
  102. #define TCHAR    1
  103. #define TNUM    2
  104.  
  105. /*    Tuple status codes    */
  106.  
  107. #define UNUSED    0
  108. #define ACTIVE    1
  109. #define DELETED    2
  110.  
  111. /*    Relation header page format defs    */
  112.  
  113. #define RNSIZE    10
  114. #define HSIZE    16
  115. #define ASIZE    16
  116. #define    ANSIZE    10
  117. #define NATTRS    31
  118.  
  119. /*    Sizeof various structs    - NGT    */
  120.  
  121. #define RELSIZE    672
  122. #define SCNSIZE 10
  123. #define SELSIZE 8
  124. #define BINDSIZE 8
  125. #define SATSIZE 16
  126. #define SRELSIZE 10
  127. #define OPSIZE 8    /*  I think - check up later */
  128. #define CELLSIZE 2
  129. #define MACSIZE 6
  130. #define MTSIZE 4
  131. #define IFSIZE 12
  132. #define KEYSIZE 8
  133. #define IOBSIZE 136    /* I/O buffer - iobuf */
  134. #define TOTSIZE 10    /* Total field size */
  135.  
  136. /*    Error codes    */
  137.  
  138. #define ENDSET    0
  139. #define INSMEM    1
  140. #define RELFNF    2
  141. #define BADHDR    3
  142. #define TUPINP    4
  143. #define TUPOUT    5
  144. #define RELFUL    6
  145. #define RELCRE    7
  146. #define DUPATT    8
  147. #define MAXATT    9
  148. #define INSBLK    10
  149. #define SYNTAX    11
  150. #define ATUNDF    12
  151. #define ATAMBG    13
  152. #define RLUNDF    14
  153. #define CDSIZE    15
  154. #define INPFNF    16
  155. #define OUTCRE    17
  156. #define INDFNF    18
  157. #define BADSET    19
  158.  
  159. struct iobuf {
  160.     int fd;
  161.     int isect;
  162.     int nextc;
  163.     int lastop;
  164.     char buff [128];
  165. };
  166.  
  167. struct attribute {
  168.     char at_name[ANSIZE];
  169.     char at_type;
  170.     char at_size;
  171.     char at_scale;
  172.     char at_width;
  173.     char at_unused[ASIZE-ANSIZE-4];
  174. };
  175.  
  176. struct header {        /* Must be 512 bytes */
  177.     char hd_tcnt[2];
  178.     char hd_tmax[2];
  179.     char hd_data[2];
  180.     char hd_size[2];
  181.     char hd_unused[HSIZE-8];
  182.     struct attribute hd_attrs[NATTRS];
  183. };
  184.  
  185. struct relation {
  186.     char rl_name[RNSIZE];
  187.     unsigned rl_tcnt;
  188.     unsigned rl_tmax;
  189.     int rl_data;
  190.     int rl_size;
  191.     int rl_store;
  192.     struct iobuf rl_fd;
  193.     int rl_scnref;
  194.     struct header rl_header;
  195.     struct relation *rl_next;
  196. };
  197.  
  198. struct scan {
  199.     struct relation *sc_relation;
  200.     unsigned sc_dtnum;
  201.     unsigned sc_atnum;
  202.     int sc_store;
  203.     char *sc_tuple;
  204. };
  205.  
  206. struct srel {
  207.     char *sr_name;
  208.     struct scan *sr_scan;
  209.     int sr_ctuple;
  210.     int sr_update;
  211.     struct srel *sr_next;
  212. };
  213.  
  214. struct sattr {
  215.     char *sa_rname;
  216.     char *sa_aname;
  217.     char *sa_name;
  218.     char *sa_aptr;
  219.     char *sa_total;        /* total field */
  220.     struct srel *sa_srel;
  221.     struct attribute *sa_attr;
  222.     struct sattr *sa_next;
  223. };
  224.  
  225. struct operand {
  226.     int o_type;
  227.     union {
  228.         struct {
  229.             int ovc_type;
  230.             char *ovc_string;
  231.             int ovc_length;
  232.         } ov_char;
  233.         int ov_boolean;
  234.     } o_value;
  235. };
  236.  
  237. union codecell {
  238.     int c_operator;
  239.     struct operand *c_operand;
  240. };
  241.  
  242. struct binding {
  243.     struct attribute *bd_attr;
  244.     char *bd_vtuple;
  245.     char *bd_vuser;
  246.     struct binding *bd_next;
  247. };
  248.  
  249. struct sel {
  250.     struct srel *sl_rels;
  251.     struct sattr *sl_attrs;
  252.     union codecell *sl_where;
  253.     struct binding *sl_bindings;
  254. };
  255.  
  256. struct mtext {
  257.     char *mt_text;
  258.     struct mtext *mt_next;
  259. };
  260.  
  261. struct macro {
  262.     char *mc_name;
  263.     struct mtext *mc_mtext;
  264.     struct macro *mc_next;
  265. };
  266.  
  267. struct ifile {
  268.     char *if_fp;
  269.     struct mtext *if_mtext;
  270.     char *if_cmdline;
  271.     int if_savech;
  272.     char *if_lptr;
  273.     struct ifile *if_next;
  274. };
  275.  
  276. struct skey {
  277.     int sk_type;
  278.     struct attribute *sk_aptr;
  279.     int sk_start;
  280.     struct skey *sk_next;
  281. };
  282.  
  283. /* Global variables */
  284.  
  285. char dbv_tstring[STRINGMAX+1];
  286. char *iprompt,*cprompt;
  287. char cmdline[LINEMAX+2],*lptr;
  288. char gbuf[LINEMAX];
  289. char *pbuf;
  290. char buffer[TABLEMAX+1];
  291. char obuf[BUFSIZ];
  292. int bndx;
  293. int cndx;
  294. int atbol;
  295. int savech;
  296. int savetkn;
  297.  
  298. int dbv_fold;
  299. int dbv_token;
  300. int dbv_tvalue;
  301. int dbv_errcode;
  302. int dbv_verify;
  303. int dbv_total;
  304. int dbv_auto;
  305. int dbv_logging;
  306. int dbv_lnct;
  307. int dbv_pgln;
  308. int dbv_page;
  309.  
  310. FILE *dbv_lfp;        /* log file */
  311. struct ifile *dbv_ifp;
  312. struct macro *dbv_macros;
  313. struct operand *stack[STACKMAX],**sptr;
  314. union codecell *cptr;
  315. union codecell code[CODEMAX+1];
  316.  
  317. struct relation *reltns;
  318.  
  319. struct sel *selptr;
  320.  
  321. #define RETERR(erra) dbv_errcode = erra; return (NULL);
  322.  
  323. /* sdbio end */
  324. struct relation *reltns;
  325.  
  326. struct sel *selptr;
  327.  
  328. #define RETERR(erra) dbv_errcode = erra; r